package router

import (
	"Graphite/controller"
	"Graphite/middleware"
	"Graphite/util"
	"github.com/gin-gonic/gin"
)

func InitRouter(e *gin.Engine){
	e.Use(util.CORS(util.Options{Origin: "*"}))
	 v1:= e.Group("/v1")
	 //v1.Use(middleware.JWTAuthMiddleware(),middleware.TokenCheck(),middleware.Verification())
	{
		v1.POST("/AddCon",controller.AddCon) //配置表
		//浸渍
		v1.POST("/AddHourData",controller.AddHourData)//浸渍小时数据
		v1.POST("/AddGasUsage",controller.AddGasUsage)//天然气用量
		v1.POST("/AddDippingNote",controller.AddDippingNote)//浸渍系统运行记录
		//石墨化1
		v1.POST("/AddQuality",controller.AddQuality)//用户质量要求
		v1.POST("/AddLoad",controller.AddLoadOven)//装炉报告
		v1.POST("/AddEle",controller.AddEleCurve)//送电曲线
		//石墨化2
		v1.POST("/AddBasicInfo",controller.AddBasic)//基本信息
		v1.POST("/AddDetailInfo",controller.AddDetail)//详细信息
		//成型1
		v1.POST("/AddScreening",controller.AddScreening)//筛分记录
		//成型2
		v1.POST("/AddIngredient",controller.AddIngredient)//配料记录
		//库管
		v1.POST("/AddInitRecord",controller.AddInitRecord)//原始记录
		//质检
		v1.POST("/AddDailyReport",controller.AddDailyReport)//检查日报
		//产品信息
		v1.POST("/AddProductInfo",controller.AddProduction)
		//隧道窑
		v1.POST("/AddLocation",controller.AddLocation)//测点信息
		v1.POST("/AddIncar",controller.AddIncar)//进车信息
		v1.POST("/AddOutcar",controller.AddOutcar)//出车信息
		v1.POST("/AddHan_Suc",controller.AddHan_Suc)//交接班
		//货物管理
		v1.POST("/AddAmount",middleware.ProcessJudge(),controller.AddAmount)//数量表
		v1.POST("/CargoSummary",controller.CargoSummaryInsert)//汇总表
	}

	//获取信息组
	v2 := e.Group("/v2")
	//v2.Use(middleware.JWTAuthMiddleware(),middleware.TokenCheck(),middleware.Verification())
	{//配置
		v2.GET("/GetConfig",controller.GetConfig)
		//石墨化1
		v2.GET("/GetQuality",controller.GetQuality)//获取用户质量要求数据
		v2.GET("/GetLoad",controller.GetLoad)//获取装炉报告数据
		v2.GET("/GetElec",controller.GetElec)//获取送电曲线数据
		//石墨化2
		v2.GET("/GetBasicInfo",controller.GetBasicInfo)//获取基本信息
		v2.GET("/GetDetailInfo",controller.GetDetailInfo)//获取详细信息
		//产品
		v2.GET("/GetProductInfo",controller.GetProductInfo)//获取产品信息
		//浸渍
		v2.GET("/GetHourData",controller.GetHourData)//浸渍小时数据
		v2.GET("/GetGas",controller.GetGas)//天然气用量
		v2.GET("/GetSysNote",controller.GetSysNote)//浸渍运行系统记录
		//成型
		v2.GET("/GetScrRecord",controller.GetScrRecord)//筛分记录
		v2.GET("/GetIngredRecord",controller.GetIngredNote)//配料记录
		//质检
		v2.GET("/GetDaily",controller.GetDaily)//检察日报
		//隧道窑
		v2.GET("/GetLocInfo",controller.GetLocInfo)//测点信息
		v2.GET("/GetIncar",controller.GetIncar)//进车信息
		v2.GET("/GetOutcar",controller.GetOutcar)//出车信息
		v2.GET("/GetHan_Suc",controller.GetHan_Suc)//交接班
		//库管
		v2.GET("/GetInit",controller.GetInitRecord)//原始记录
		//货物管理
		v2.GET("/GetAmount",controller.GetAmount)//数量表
		v2.GET("/GetWeight",controller.GetWeight)//重量表
		v2.GET("/GetCargoSummary",controller.GetCargoSummary) //汇总表
	}
	//修改
	v3 := e.Group("/v3")
	//v3.Use(middleware.JWTAuthMiddleware(),middleware.TokenCheck(),middleware.Verification())
	{
		v3.PUT("/UpdateCon",controller.UpdateCon)//修改配置表
		//浸渍
		v3.PUT("/UpdateHourData",controller.UpdateHourdata)//修改浸渍小时数据
		v3.PUT("/UpdateGasUsage",controller.UpdateGas)//修改天然气用量
		v3.PUT("/UpdateDipNote",controller.UpdateDipNote)//修改浸渍系统运行记录
		v3.PUT("/UpdateDipNote2",controller.UpdateDipNote2)//修改特殊Case结构体数组
		//石墨化1
		v3.PUT("/UpdateQua",controller.UpdateQua)//修改质量要求表
		v3.PUT("/UpdateLoad",controller.UpdateLoad)//修改装炉报告
		v3.PUT("/UpdateEle",controller.UpdateEle)//修改送电曲线
		//石墨化2
		v3.PUT("/UpdateBasic",controller.UpdateBasic)//修改基本信息
		v3.PUT("/UpdateDetail",controller.UpdateDetai)//详细信息
		//成型1
		v3.PUT("/UpdateScreening",controller.UpdateScreening)//筛分记录
		//成型2
		v3.PUT("/UpdateIngredient",controller.UpdateIngredient)//配料记录
		//库管
		v3.PUT("/UpdateInitRecord",controller.UpdateInitRecord)//原始记录
		//质检
		v3.PUT("/UpdateDaily",controller.UpdateDaily)//检查日报
		//产品
		v3.PUT("/UpdateProduct",controller.UpdateProduct)//修改产品信息
		//隧道窑
		v3.PUT("/UpdateLocation",controller.UpdateLocation)//测点信息
		v3.PUT("/UpdateIncar",controller.UpdateIncar)//进车信息
		v3.PUT("/UpdateOutcar",controller.UpdateOutcar)//出车信息
		v3.PUT("/UpdateHan_Suc",controller.UpdateHan_Suc)//交接班
		//货物管理
		v3.PUT("/UpdateGoods",controller.UpdateGoods)//修改数量表同时修改重量表
	}
	//删除

	v4:=e.Group("/v4")
	//v4.Use(middleware.JWTAuthMiddleware(),middleware.TokenCheck(),middleware.Verification())
	{
		v4.DELETE("/Delete",controller.Delete1)
	}


	//权限

	user:=e.Group("/user")
	{
		user.POST("/login", controller.Login)
		user.POST("/findByT",middleware.JWTAuthMiddleware(),controller.GetUserByToken)
		//user.Use(middleware.JWTAuthMiddleware(),middleware.TokenCheck(),middleware.Verification())
		user.GET("/findAll",controller.FindAllUser)
		user.GET("/findByN",controller.FindAllUserByName)
		user.POST("/insert", controller.UserInsert)
		user.PUT("/update", controller.UserUpdate)
		user.PUT("/updatePW",controller.UserPasswordUpdate)
		user.DELETE("/delete", controller.UserDelete)
	}

	api := e.Group("/api")
	//api.Use(middleware.JWTAuthMiddleware(),middleware.TokenCheck(),middleware.Verification())
	{
		api.POST("/insert",controller.ApiInsert)
		api.GET("/findAll",controller.FindAllApi)
		api.GET("/findByNUAndM",controller.FindAllApiByNameUrlAndMethod)
		//api.GET("/findByM",controller.FindAllApiByMethod)
		api.PUT("/update",controller.ApiUpdate)
		api.DELETE("/delete",controller.ApiDelete)
	}

	role := e.Group("/role")
	//role.Use(middleware.JWTAuthMiddleware(),middleware.TokenCheck(),middleware.Verification())
	{
		role.POST("/insert",controller.RoleInsert)
		role.GET("/findAll",controller.FindAllRole)
		role.GET("/findByN",controller.FindAllRoleByName)
		role.PUT("/insertApi",controller.InsertRoleApi)
		role.DELETE("/deleteApi",controller.DeleteRoleApi)
		role.DELETE("/delete",controller.RoleDelete)
		role.PUT("/update",controller.RoleUpdate)
		role.GET("/findApi",controller.FindRoleAPI)
	}

	plat := e.Group("/plat")
	//plat.Use(middleware.JWTAuthMiddleware(),middleware.TokenCheck(),middleware.Verification())
	{
		plat.POST("/insert",controller.AddPlat_Para)
		plat.GET("/find",controller.GetPlatformParameters)
		plat.PUT("/update",controller.PlatUpdate)
	}
	e.GET("/home",middleware.JWTAuthMiddleware(),middleware.TokenCheck(),middleware.Verification(),controller.Home)
	e.POST("/upload", controller.UploadImg)
}